Attempt to make redisplay more selective when changing fonts.
authorDmitry Antipov <dmantipov@yandex.ru>
Fri, 6 Sep 2013 07:00:29 +0000 (11:00 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Fri, 6 Sep 2013 07:00:29 +0000 (11:00 +0400)
commit508cffe32a66a7311d0fe957445af22b2ab338c8
treee9fe9dfbc9d9ea78db9b1eb8525776aca5dbc460
parentbe318a856a2cedf43bae3becfa6592f3dd9f3b39
Attempt to make redisplay more selective when changing fonts.
* frame.h (struct frame): New bitfield fonts_changed.
* dispextern.h (fonts_changed_p, adjust_glyphs): Remove declaration.
(adjust_frame_glyphs): Add prototype.
* dispnew.c (fonts_changed_p): Remove.
(adjust_glyphs): Remove becase we do not
adjust matrices on all frames at once any more.
(adjust_frame_glyphs): Block and unblock input here.
(adjust_glyph_matrix): Use fonts_changed.
(change_frame_size_1): Use adjust_frame_glyphs.
* font.c (font_open_entity): Use fonts_changed.
* frame.c (set_menu_bar_lines, Fmake_terminal_frame):
* w32fns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
* window.c (Fdelete_other_windows_internal, Fwindow_resize_apply)
(Fsplit_window_internal, Fdelete_window_internal, grow_mini_window)
(shrink_mini_window, Fresize_mini_window_internal)
(window_scroll_pixel_based, Fset_window_configuration)
(apply_window_adjustment, Fset_window_vscroll):
* xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
Use adjust_frame_glyphs.
* xdisp.c (redisplay_tool_bar, redisplay_window, try_window)
(try_window_reusing_current_matrix, try_window_id, display_line)
(IT_EXPAND_MATRIX_WIDTH): Use fonts_changed.
(redisplay_internal): Consider fonts_changed and adjust frame
matrices for each frame only if the frame is visible.  If font
has been changed on some frame during full redisplay, retry
only visible frames where the font has been actually changed.
src/ChangeLog
src/dispextern.h
src/dispnew.c
src/font.c
src/frame.c
src/frame.h
src/w32fns.c
src/window.c
src/xdisp.c
src/xfns.c